<!DOCTYPE html>
<html lang="zh-cn">
<head prefix="og: http://ogp.me/ns#">
  <meta charset="utf-8">
  <title>Box | Hexo</title>
  <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <!-- Canonical links -->
  <link rel="canonical" href="https://hexo.io/zh-cn/api/box.html">
  <!-- Alternative links -->
  
    
      <link rel="alternative" hreflang="en" href="https://hexo.io/api/box.html">
    
      <link rel="alternative" hreflang="zh-tw" href="https://hexo.io/zh-tw/api/box.html">
    
      <link rel="alternative" hreflang="zh-cn" href="https://hexo.io/zh-cn/api/box.html">
    
      <link rel="alternative" hreflang="ru" href="https://hexo.io/ru/api/box.html">
    
      <link rel="alternative" hreflang="ko" href="https://hexo.io/ko/api/box.html">
    
  
  <!-- Icon -->
  <link rel="apple-touch-icon" sizes="57x57" href="/icon/apple-touch-icon-57x57.png">
  <link rel="apple-touch-icon" sizes="114x114" href="/icon/apple-touch-icon-114x114.png">
  <link rel="apple-touch-icon" sizes="72x72" href="/icon/apple-touch-icon-72x72.png">
  <link rel="apple-touch-icon" sizes="144x144" href="/icon/apple-touch-icon-144x144.png">
  <link rel="apple-touch-icon" sizes="60x60" href="/icon/apple-touch-icon-60x60.png">
  <link rel="apple-touch-icon" sizes="120x120" href="/icon/apple-touch-icon-120x120.png">
  <link rel="apple-touch-icon" sizes="76x76" href="/icon/apple-touch-icon-76x76.png">
  <link rel="apple-touch-icon" sizes="152x152" href="/icon/apple-touch-icon-152x152.png">
  <link rel="icon" type="image/png" href="/icon/favicon-196x196.png" sizes="196x196">
  <link rel="icon" type="image/png" href="/icon/favicon-160x160.png" sizes="160x160">
  <link rel="icon" type="image/png" href="/icon/favicon-96x96.png" sizes="96x96">
  <link rel="icon" type="image/png" href="/icon/favicon-16x16.png" sizes="16x16">
  <link rel="icon" type="image/png" href="/icon/favicon-32x32.png" sizes="32x32">
  <meta name="msapplication-TileColor" content="#2f83cd">
  <meta name="msapplication-TileImage" content="/icon/mstile-144x144.png">
  <!-- CSS -->
  <!-- build:css build/css/navy.css -->
  <link rel="stylesheet" href="/css/navy.css">
  <!-- endbuild -->
  <link href="https://fonts.googleapis.com/css?family=Lato:300,400,700" rel="stylesheet" type="text/css">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css">
  <!-- RSS -->
  <link rel="alternate" href="/atom.xml" title="Hexo">
  <!-- Open Graph -->
  <meta name="description" content="「Box」是 Hexo 用来处理特定文件夹中的文件的容器，在 Hexo 中有两个 Box，分别是 hexo.source 和 hexo.theme，前者用于处理 source 文件夹，而后者用于处理主题文件夹。 载入文件Box 提供了两种方法来载入文件：process, watch，前者用于载入文件夹内的所有文件；而后者除了执行 process 以外，还会继续监视文件变动。 box.process">
<meta property="og:type" content="website">
<meta property="og:title" content="Box">
<meta property="og:url" content="https://hexo.io/zh-cn/api/box.html">
<meta property="og:site_name" content="Hexo">
<meta property="og:description" content="「Box」是 Hexo 用来处理特定文件夹中的文件的容器，在 Hexo 中有两个 Box，分别是 hexo.source 和 hexo.theme，前者用于处理 source 文件夹，而后者用于处理主题文件夹。 载入文件Box 提供了两种方法来载入文件：process, watch，前者用于载入文件夹内的所有文件；而后者除了执行 process 以外，还会继续监视文件变动。 box.process">
<meta property="og:locale" content="zh-cn">
<meta property="og:updated_time" content="2017-12-06T21:52:16.000Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Box">
<meta name="twitter:description" content="「Box」是 Hexo 用来处理特定文件夹中的文件的容器，在 Hexo 中有两个 Box，分别是 hexo.source 和 hexo.theme，前者用于处理 source 文件夹，而后者用于处理主题文件夹。 载入文件Box 提供了两种方法来载入文件：process, watch，前者用于载入文件夹内的所有文件；而后者除了执行 process 以外，还会继续监视文件变动。 box.process">
<meta name="twitter:site" content="hexojs">
<meta property="fb:admins" content="100000247608790">
  <!-- Google Analytics -->
  
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-48498357-3', 'auto');
  ga('send', 'pageview');
</script>

</head>

<body>
  <div id="container">
    <header id="header" class="wrapper">
  <div id="header-inner" class="inner">
    <h1 id="logo-wrap">
      <a href="/zh-cn/" id="logo">Hexo</a>
    </h1>
    <nav id="main-nav">
      <a href="/zh-cn/docs/" class="main-nav-link">文档</a><a href="/zh-cn/api/" class="main-nav-link">API</a><a href="/news/" class="main-nav-link">新闻</a><a href="/plugins/" class="main-nav-link">插件</a><a href="/themes/" class="main-nav-link">主题</a>
      <a href="https://github.com/hexojs/hexo" class="main-nav-link"><i class="fa fa-github-alt"></i></a>
      <div id="search-input-wrap">
        <div id="search-input-icon">
          <i class="fa fa-search"></i>
        </div>
        <input type="search" id="search-input" placeholder="Search...">
      </div>
    </nav>
    <div id="lang-select-wrap">
      <label id="lang-select-label"><i class="fa fa-globe"></i><span>简体中文</span></label>
      <select id="lang-select" data-canonical="api/box.html">
        
          <option value="en">English</option>
        
          <option value="zh-tw">正體中文</option>
        
          <option value="zh-cn" selected>简体中文</option>
        
          <option value="ru">Русский</option>
        
          <option value="ko">한국어</option>
        
      </select>
    </div>
    <a id="mobile-nav-toggle">
      <span class="mobile-nav-toggle-bar"></span>
      <span class="mobile-nav-toggle-bar"></span>
      <span class="mobile-nav-toggle-bar"></span>
    </a>
  </div>
</header>

    <div id="content-wrap">
  <div id="content" class="wrapper">
    <div id="content-inner">
      <article class="article-container" itemscope itemtype="http://schema.org/Article">
        <div class="article-inner">
          <div class="article">
            <div class="inner">
              <header class="article-header">
                <h1 class="article-title" itemprop="name">Box</h1>
                <a href="https://github.com/hexojs/site/edit/master/source/zh-cn/api/box.md" class="article-edit-link" title="改进本文"><i class="fa fa-pencil"></i></a>
              </header>
              <div class="article-content" itemprop="articleBody">
                <p>「Box」是 Hexo 用来处理特定文件夹中的文件的容器，在 Hexo 中有两个 Box，分别是 <code>hexo.source</code> 和 <code>hexo.theme</code>，前者用于处理 <code>source</code> 文件夹，而后者用于处理主题文件夹。</p>
<h2 id="载入文件" class="article-heading"><a href="#载入文件" class="headerlink" title="载入文件"></a>载入文件<a class="article-anchor" href="#载入文件" aria-hidden="true"></a></h2><p>Box 提供了两种方法来载入文件：<code>process</code>, <code>watch</code>，前者用于载入文件夹内的所有文件；而后者除了执行 <code>process</code> 以外，还会继续监视文件变动。</p>
<figure class="highlight js"><table><tr><td class="code"><pre><span class="line">box.process().then(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">  <span class="comment">// ...</span></span><br><span class="line">&#125;);</span><br><span class="line"></span><br><span class="line">box.watch().then(<span class="function"><span class="keyword">function</span>(<span class="params"></span>)</span>&#123;</span><br><span class="line">  <span class="comment">// 之后可调用 box.unwatch()，停止监视文件</span></span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure>
<h2 id="比对路径" class="article-heading"><a href="#比对路径" class="headerlink" title="比对路径"></a>比对路径<a class="article-anchor" href="#比对路径" aria-hidden="true"></a></h2><p>Box 提供了多种比对路径的模式，您可以以使用正则表达式（regular expression）、函数、或是一种类似于 Express 的路径字符串，例如：</p>
<figure class="highlight plain"><table><tr><td class="code"><pre><span class="line">posts/:id =&gt; posts/89</span><br><span class="line">posts/*path =&gt; posts/2015/title</span><br></pre></td></tr></table></figure>
<p>您可以以参考 <a href="https://github.com/hexojs/hexo-util#patternrule" target="_blank" rel="noopener">util.Pattern</a> 以获得更多信息。</p>
<h2 id="处理器（Processor）" class="article-heading"><a href="#处理器（Processor）" class="headerlink" title="处理器（Processor）"></a>处理器（Processor）<a class="article-anchor" href="#处理器（Processor）" aria-hidden="true"></a></h2><p>处理器（Processor）是 Box 中非常重要的元素，它用于处理文件，您可以使用上述的路径对比来限制该处理器所要处理的文件类型。使用 <code>addProcessor</code> 来添加处理器。</p>
<figure class="highlight js"><table><tr><td class="code"><pre><span class="line">box.addProcessor(<span class="string">'posts/:id'</span>, <span class="function"><span class="keyword">function</span>(<span class="params">file</span>)</span>&#123;</span><br><span class="line">  <span class="comment">//</span></span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure>
<p>Box 在处理时会把目前处理的文件内容（<code>file</code>）传给处理器，您可以通过此参数获得该文件的数据。</p>
<table>
<thead>
<tr>
<th>属性</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>source</code></td>
<td>文件完整路径</td>
</tr>
<tr>
<td><code>path</code></td>
<td>文件相对于 Box 的路径</td>
</tr>
<tr>
<td><code>type</code></td>
<td>文件类型。有 <code>create</code>, <code>update</code>, <code>skip</code>, <code>delete</code>。</td>
</tr>
<tr>
<td><code>params</code></td>
<td>从路径对比中取得的信息</td>
</tr>
</tbody>
</table>
<p>Box 还提供了一些方法，让您无须手动处理文件 I/O。</p>
<table>
<thead>
<tr>
<th>方法</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>read</code></td>
<td>读取文件</td>
</tr>
<tr>
<td><code>readSync</code></td>
<td>同步读取文件</td>
</tr>
<tr>
<td><code>stat</code></td>
<td>读取文件状态</td>
</tr>
<tr>
<td><code>statSync</code></td>
<td>同步读取文件状态</td>
</tr>
<tr>
<td><code>render</code></td>
<td>渲染文件</td>
</tr>
<tr>
<td><code>renderSync</code></td>
<td>同步渲染文件</td>
</tr>
</tbody>
</table>

              </div>
              <footer class="article-footer">
                <time class="article-footer-updated" datetime="2017-12-06T21:52:16.000Z" itemprop="dateModified">上次更新：2017-12-06</time>
                <a href="router.html" class="article-footer-prev" title="路由"><i class="fa fa-chevron-left"></i><span>上一页</span></a><a href="rendering.html" class="article-footer-next" title="渲染"><span>下一页</span><i class="fa fa-chevron-right"></i></a>
              </footer>
              
<section id="comments">
  <div id="disqus_thread"></div>
</section>
<script>
  var disqus_shortname = 'hexojs';
  var disqus_url = 'https://hexo.io/zh-cn/api/box.html';
  var disqus_title = "Box";
  var disqus_config = function(){
    this.language = 'zh';
  };
  (function(){
    var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
    dsq.src = 'https://go.disqus.com/embed.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
  })();
</script>

            </div>
          </div>
          <aside id="article-toc" role="navigation">
            <div id="article-toc-inner">
              <script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?zoneid=1673&serve=C6AILKT&placement=hexoio" id="_carbonads_js"></script>
              <strong class="sidebar-title">目录</strong>
              <ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#载入文件"><span class="toc-text"><a href="#&#x8F7D;&#x5165;&#x6587;&#x4EF6;" class="headerlink" title="&#x8F7D;&#x5165;&#x6587;&#x4EF6;"></a>&#x8F7D;&#x5165;&#x6587;&#x4EF6;</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#比对路径"><span class="toc-text"><a href="#&#x6BD4;&#x5BF9;&#x8DEF;&#x5F84;" class="headerlink" title="&#x6BD4;&#x5BF9;&#x8DEF;&#x5F84;"></a>&#x6BD4;&#x5BF9;&#x8DEF;&#x5F84;</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#处理器（Processor）"><span class="toc-text"><a href="#&#x5904;&#x7406;&#x5668;&#xFF08;Processor&#xFF09;" class="headerlink" title="&#x5904;&#x7406;&#x5668;&#xFF08;Processor&#xFF09;"></a>&#x5904;&#x7406;&#x5668;&#xFF08;Processor&#xFF09;</span></a></li></ol>
              <a href="#" id="article-toc-top">回到顶部</a>
            </div>
          </aside>
        </div>
      </article>
      <aside id="sidebar" role="navigation">
  <div class="inner">
    <strong class="sidebar-title">核心</strong><a href="index.html" class="sidebar-link">概述</a><a href="events.html" class="sidebar-link">事件</a><a href="locals.html" class="sidebar-link">本地变量</a><a href="router.html" class="sidebar-link">路由</a><a href="box.html" class="sidebar-link current">盒(Box)</a><a href="rendering.html" class="sidebar-link">渲染</a><a href="posts.html" class="sidebar-link">文章</a><a href="scaffolds.html" class="sidebar-link">模版 (Scaffold)</a><a href="themes.html" class="sidebar-link">主题</a><strong class="sidebar-title">扩展</strong><a href="console.html" class="sidebar-link">控制台 (Console)</a><a href="deployer.html" class="sidebar-link">部署器 (Deployer)</a><a href="filter.html" class="sidebar-link">过滤器 (Filter)</a><a href="generator.html" class="sidebar-link">生成器 (Generator)</a><a href="helper.html" class="sidebar-link">辅助函数 (Helper)</a><a href="migrator.html" class="sidebar-link">迁移器 (Migrator)</a><a href="processor.html" class="sidebar-link">处理器 (Processor)</a><a href="renderer.html" class="sidebar-link">渲染引擎 (Renderer)</a><a href="tag.html" class="sidebar-link">标签 (Tag)</a>
  </div>
</aside>
    </div>
  </div>
</div>

    <footer id="footer" class="wrapper">
  <div class="inner">
    <div id="footer-copyright">
      &copy; 2017 <a href="https://github.com/hexojs/hexo/graphs/contributors" target="_blank">Hexo</a><br>
      Documentation licensed under <a href="http://creativecommons.org/licenses/by/4.0/" target="_blank">CC BY 4.0</a>.
    </div>
    <div id="footer-links">
      <a href="https://twitter.com/hexojs" class="footer-link" target="_blank"><i class="fa fa-twitter"></i></a>
      <a href="https://github.com/hexojs/hexo" class="footer-link" target="_blank"><i class="fa fa-github-alt"></i></a>
    </div>
  </div>
</footer>

  </div>
  <div id="mobile-nav-dimmer"></div>
  <nav id="mobile-nav">
  <div id="mobile-nav-inner">
    <ul id="mobile-nav-list">
      <a href="/zh-cn/docs/" class="mobile-nav-link">文档</a><a href="/zh-cn/api/" class="mobile-nav-link">API</a><a href="/news/" class="mobile-nav-link">新闻</a><a href="/plugins/" class="mobile-nav-link">插件</a><a href="/themes/" class="mobile-nav-link">主题</a>
      <li class="mobile-nav-item">
        <a href="https://github.com/hexojs/hexo" class="mobile-nav-link" rel="external" target="_blank">GitHub</a>
      </li>
    </ul>
    
      <strong class="mobile-nav-title">核心</strong><a href="index.html" class="mobile-nav-link">概述</a><a href="events.html" class="mobile-nav-link">事件</a><a href="locals.html" class="mobile-nav-link">本地变量</a><a href="router.html" class="mobile-nav-link">路由</a><a href="box.html" class="mobile-nav-link current">盒(Box)</a><a href="rendering.html" class="mobile-nav-link">渲染</a><a href="posts.html" class="mobile-nav-link">文章</a><a href="scaffolds.html" class="mobile-nav-link">模版 (Scaffold)</a><a href="themes.html" class="mobile-nav-link">主题</a><strong class="mobile-nav-title">扩展</strong><a href="console.html" class="mobile-nav-link">控制台 (Console)</a><a href="deployer.html" class="mobile-nav-link">部署器 (Deployer)</a><a href="filter.html" class="mobile-nav-link">过滤器 (Filter)</a><a href="generator.html" class="mobile-nav-link">生成器 (Generator)</a><a href="helper.html" class="mobile-nav-link">辅助函数 (Helper)</a><a href="migrator.html" class="mobile-nav-link">迁移器 (Migrator)</a><a href="processor.html" class="mobile-nav-link">处理器 (Processor)</a><a href="renderer.html" class="mobile-nav-link">渲染引擎 (Renderer)</a><a href="tag.html" class="mobile-nav-link">标签 (Tag)</a>
    
  </div>
  <div id="mobile-lang-select-wrap">
    <span id="mobile-lang-select-label"><i class="fa fa-globe"></i><span>简体中文</span></span>
    <select id="mobile-lang-select" data-canonical="api/box.html">
      
        <option value="en">English</option>
      
        <option value="zh-tw">正體中文</option>
      
        <option value="zh-cn" selected>简体中文</option>
      
        <option value="ru">Русский</option>
      
        <option value="ko">한국어</option>
      
    </select>
  </div>
</nav>
  <!-- Scripts -->
<!-- build:js build/js/main.js -->
<script src="/js/lang_select.js"></script>
<script src="/js/toc.js"></script>
<script src="/js/mobile_nav.js"></script>
<!-- endbuild -->

<!-- Algolia -->

<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script>
<script type="text/javascript">
document.getElementById('search-input-wrap').classList.add('on');
docsearch({
  apiKey: 'cdea7d4e47d84f6145b77e7f68689f35',
  indexName: 'hexo_zh-cn',
  inputSelector: '#search-input'
});
</script>


</body>
</html>